package com.zt.chatgpt.repository;

import com.zt.chatgpt.dao.IUserCountDao;
import com.zt.chatgpt.openai.model.aggregates.UserAccountQuotaEntity;
import com.zt.chatgpt.openai.model.valobj.UserAccountStatusVO;
import com.zt.chatgpt.openai.repository.IOpenAiRepository;
import com.zt.chatgpt.po.UserAccountPO;
import org.springframework.stereotype.Repository;

import javax.annotation.Resource;

/**
 * @author: zt
 * @Description: 用户账户存储服务
 * @create: 2024-05-22 17:25
 */

@Repository
public class OpenAiRepository implements IOpenAiRepository {

    @Resource
    private IUserCountDao userCountDao;

    @Override
    public int subAccountQuota(String openai) {
        return userCountDao.subAccountQuota(openai);
    }

    @Override
    public UserAccountQuotaEntity queryUserAccount(String openid) {
        UserAccountPO userAccount = userCountDao.queryUserAccount(openid);
        if (null == userAccount) {
            return null;
        }
        UserAccountQuotaEntity userAccountQuotaEntity = UserAccountQuotaEntity
                .builder()
                .openid(userAccount.getOpenid())
                .totalQuota(userAccount.getTotalQuota())
                .surplusQuota(userAccount.getSurplusQuota())
                .userAccountStatusVO(UserAccountStatusVO.getInfo(userAccount.getStatus()))
                .build();
        userAccountQuotaEntity.genAllowModelTypes(userAccount.getModelTypes());
        return userAccountQuotaEntity;
    }
}
